home *** CD-ROM | disk | FTP | other *** search
/ Complete Linux / Complete Linux.iso / docs / apps / circuits / spice2g6.z / spice2g6 / spice / Fortran / fndnam.f < prev    next >
Encoding:
Text File  |  1989-02-03  |  2.3 KB  |  64 lines

  1.       subroutine fndnam(anam,jsbptr,ispot,id)
  2.       implicit double precision (a-h,o-z)
  3. c
  4. c     this routine searches for an element with id 'id' by tracing back
  5. c up the subcircuit definition list.  if the element is not found, the
  6. c nominal element list is searched.
  7. c
  8. c spice version 2g.6  sccsid=tabinf 3/15/83
  9.       common /tabinf/ ielmnt,isbckt,nsbckt,iunsat,nunsat,itemps,numtem,
  10.      1   isens,nsens,ifour,nfour,ifield,icode,idelim,icolum,insize,
  11.      2   junode,lsbkpt,numbkp,iorder,jmnode,iur,iuc,ilc,ilr,numoff,isr,
  12.      3   nmoffc,iseq,iseq1,neqn,nodevs,ndiag,iswap,iequa,macins,lvnim1,
  13.      4   lx0,lvn,lynl,lyu,lyl,lx1,lx2,lx3,lx4,lx5,lx6,lx7,ld0,ld1,ltd,
  14.      5   imynl,imvn,lcvn,nsnod,nsmat,nsval,icnod,icmat,icval,
  15.      6   loutpt,lpol,lzer,irswpf,irswpr,icswpf,icswpr,irpt,jcpt,
  16.      7   irowno,jcolno,nttbr,nttar,lvntmp
  17. c spice version 2g.6  sccsid=cirdat 3/15/83
  18.       common /cirdat/ locate(50),jelcnt(50),nunods,ncnods,numnod,nstop,
  19.      1   nut,nlt,nxtrm,ndist,ntlin,ibr,numvs,numalt,numcyc
  20. c spice version 2g.6  sccsid=flags 3/15/83
  21.       common /flags/ iprnta,iprntl,iprntm,iprntn,iprnto,limtim,limpts,
  22.      1   lvlcod,lvltim,itl1,itl2,itl3,itl4,itl5,itl6,igoof,nogo,keof
  23. c spice version 2g.6  sccsid=blank 3/15/83
  24.       common /blank/ value(200000)
  25. c spice version 2g.6  sccsid=status 3/15/83
  26.       common /status/ omega,time,delta,delold(7),ag(7),vt,xni,egfet,
  27.      1   xmu,sfactr,mode,modedc,icalc,initf,method,iord,maxord,noncon,
  28.      2   iterno,itemno,nosolv,modac,ipiv,ivmflg,ipostp,iscrch,iofile
  29.       integer nodplc(64)
  30.       complex cvalue(32)
  31.       equivalence (value(1),nodplc(1),cvalue(1))
  32.       integer xxor
  33. c
  34. c
  35.       isbptr=nodplc(jsbptr)
  36.    10 if (isbptr.eq.0) go to 50
  37.       isub=nodplc(isbptr+3)
  38.       loc=nodplc(isub+3)
  39.    20 if (loc.eq.0) go to 40
  40.       if (id.ne.nodplc(loc-1)) go to 30
  41.       locv=nodplc(loc+1)
  42.       if (xxor(anam,value(locv)).ne.0) go to 30
  43.       if (id.ne.20) go to 50
  44.       go to 65
  45.    30 loc=nodplc(loc)
  46.       go to 20
  47.    40 isbptr=nodplc(isbptr-1)
  48.       go to 10
  49. c
  50.    50 loc=locate(id)
  51.    60 if (loc.eq.0) go to 90
  52.       if (nodplc(loc-1).ne.isbptr) go to 70
  53.       locv=nodplc(loc+1)
  54.       if (xxor(anam,value(locv)).ne.0) go to 70
  55.    65 nodplc(ispot)=loc
  56.       go to 100
  57.    70 loc=nodplc(loc)
  58.       go to 60
  59.    90 write (iofile,91) anam
  60.    91 format('0*error*:  unable to find ',a8/)
  61.       nogo=1
  62.   100 return
  63.       end
  64.